const CloudDBZoneWrapper = require('./CloudDBZoneWrapper')

/**
 * 支付记录
 * @param event
 * @param context
 * @param callback
 * @param logger
 */
let myHandler = async function (event, context, callback, logger) {
  logger.info(event);

  // 初始化
  const cloudDBZoneWrapper = new CloudDBZoneWrapper(logger)

  /**
   * 关于user模块的调用都会触发当前方法
   * 一般来说一个模块至少会包含一些增删查改相关的方法
   *
   * 所有我们在这里给项目定义一个规范
   * 所有的请求必须携带以下两个参数
   * 第一个参数 action 代表当前是什么操作
   * 第二个参数 payload  代表当前操作要传的参数
   *
   * 注意：有一个坑点，云函数发布到线上后接收到的参数需要转化json格式
   *
   * 在测试的时候需要传body，app调用的时候不需要
   */
  const { action, payload } = JSON.parse(event.body || "{}")


  /**
   * 转账
   * 接收参数
   * amount 转账金额
   * payer 转账人uid
   * payee 收款人uid
   */
  if (action === 'add') {

    /**
     * 转账金额不能为负数
     */
    if (payload.amount <= 0) {
      return callback({
        code: 1,
        desc: '转账金额不能小于0'
      })
    }

    // 等待插入成功再返回
    await cloudDBZoneWrapper.add(payload)

    return callback({
      code: 0,
      desc: "转账成功."
    })
  }
  if (action === 'query') {

    const result = await cloudDBZoneWrapper.query(payload)

    return callback({
      code: 0,
      desc: "查询成功.",
      data: result
    })
  }

  callback({
    code: 0,
    desc: "Success.",
    action,

  });
};

export { myHandler };